1
게으른 처리와 탐욕적인 처리: 컬렉션 처리에서의 전략적 선택
AI019Lesson 5
00:00

엘릭서에서는 데이터 처리가 두 가지 명확한 철학을 따릅니다: 탐욕적 (즉각적)이고 게으른. 이 둘 사이의 균형을 이해하는 것은 메모리 효율성과 시스템 안정성에 매우 중요합니다.

1. 열거 가능한 프로토콜

기술적으로, 반복할 수 있는 것들은 열거 가능한 프로토콜을 구현한다고 말합니다. 이 공통 계약 덕분에 다양한 데이터 구조가 동일한 함수 집합을 사용할 수 있습니다.

2. 탐욕적 모듈과 게으른 모듈

이때 Enum 모듈은 탐욕적입니다. 이는 컬렉션의 모든 내용을 즉시 소비할 수 있으며, 파이프라인의 각 단계에서 중간 리스트를 생성합니다. 반면, Stream 모듈은 게으릅니다. 다음 값은 필요할 때만 계산됩니다.

Enum (탐욕적)10GB 파일 전체를 로드함→ 충돌 (메모리 부족)Stream (게으름)줄단위로 읽음→ 안전하고 조합 가능

3. 사양과 결과의 차이

스트림 값은 Stream 값 우리가 의도한 사양일 뿐이며, 실제 결과는 아닙니다. 스트림은 열거 가능하고 조합 가능하며, 스트림을 '즉각적' 작업(예: `Enum.to_list/1`)으로 전달하기 전까지는 작업을 실행하지 않고 변환을 쌓을 수 있습니다. `Enum.to_list/1`처럼.

4. 철학의 순수성

기능적 접근과 객체지향적 접근을 혼용하면 기능적 방식의 장점이 희석됩니다. 예측 가능성 면에서 명령형 반복문보다 선언적 변환을 우선하세요.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>